As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
In modern databases, a vast amount of digital content is stored using a relational model of data organization. Various software systems used to maintain or manage such relational databases are known as a Relational Database Management System (RDBMS). Thus, an RDBMS (or, more simply, a DBMS) is a software tool for database development, administration, and management. Virtually all modern relational database systems use Structured Query Language (SQL) as the language for querying and maintaining the database (DB). Some examples of an RDBMS include an Oracle® server, a Microsoft® SQL server, a MySQL (open source) system, an IBM® DB2 system, and so on. In the discussion herein, the terms “RDBMS”, “DBMS,” “database management system,” “database manager,” “SQL server”, and other terms of similar import may be used interchangeably to refer to a relational database management tool.
When an RDBMS (or SQL server) gets a query to execute, it performs two major steps to execute the query and return the output. The first step is query compilation, which generates a query execution plan. The second step is execution of the query execution plan to generate the final output. In the SQL server, the received query is parsed and then processed by a query optimizer, which generates an execution plan. The optimizer attempts to determine the most efficient way to execute a given query. Once the query execution plan is ready and available to execute, SQL server storage engines may execute the plan using database accesses and return the desired output to the user as a result of query execution.
FIG. 1 shows an exemplary prior art execution plan 10 from an Oracle® system. The execution plan 10 is generated for the following query, which is also listed in FIG. 1 on top of the execution plan 10 and identified using the reference numeral “12”:
select*from hr. employees e, hr.departments d where e.department_id=d.department_id;
The example in FIG. 1 depicts the execution plan 10 for the query 12 with two table (the “hr.employees” table and the “hr.departments” table) joins. In this example, the Oracle® system was estimating that a total of 106 records/rows would be processed for the final result, as pointed out by the reference numeral “14”. The system was also showing that a total of 2173 rows were processed so far, as pointed out by the reference numeral “16.” It is noticed from the execution plan 10 that the number of estimated rows—106 rows—is different from the number of the actual records processed so far—2173 rows. The number of processed rows was with reference to a given point of time in the query execution—here, the plan 10 shows that 2173 records were processed during 0.13 seconds into query execution. In FIG. 1, the plan entry for the elapsed time is identified using the reference numeral “18.”